// 存储登陆人相关信息
// 导入持久化token方法
import * as auth from '@/utils/auth'
import { login, getUserInfo } from '@/api/user'

export default {
  namespaced: true,
  // 1.定义变量(响应式的)
  state: {
    // 登录成功的token==鉴权使用
    token: auth.getToken() || null,
    // 登录人信息(昵称头像,权限)
    userInfo: {}
  },
  mutations: {
    /**
     *
     * @param {*} state 获取变量对象
     * @param {*} token 外部调用传入的参数
     */
    setToken (state, token) {
      state.token = token
      auth.setToken(token)
    },
    delToken (state) {
      state.token = null
      auth.removeToken()
    },
    // 存储登陆人信息
    setUserInfo (state, userInfo) {
      state.userInfo = userInfo
    },
    // 删除登陆人信息
    delUserInfo (state) {
      state.userInfo = {}
    }
  },
  // 2. 一般定义后台请求方法（异步）
  actions: {
    async getUserInfoAction ({ commit }) {
      const UserInfo = await getUserInfo()
      console.log(UserInfo)
      commit('setUserInfo', UserInfo)
    },

    // 登录请求方法
    /**
     *
     * @param {*} context:{commit:调用mutations方法}
     * @param {*} formData:{mobile,password} 外部调用传入参数
     */
    async getTokenAction ({ commit }, formDate) {
      const token = await login(formDate)
      console.log('token:', token)
      commit('setToken', token)
    }
  }
}
